1. Preliminary Procedures

These procedures consists of importing the data set into the R environment, activating extras libraries, and organising data for performing analyses.

1.1. Activating libraries

These are additional libraries used to specific data analysis.

library ("plotly")   # Used for creating plots
## Loading required package: ggplot2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout

2. Demographics

2.1. Company Age

# Preparing dataset
age <- c("3 - 5 Years",
         "1 Year",
         "More than 10 years",
         "1 Year",
         "More than 10 years",
         "2 Years",
         "3 - 5 Years",
         "More than 10 years",
         "3 - 5 Years",
         "3 - 5 Years",
         "6 - 10 Years",
         "More than 10 years",
         "2 Years",
         "More than 10 years",
         "6 - 10 Years",
         "More than 10 years",
         "6 - 10 Years",
         "More than 10 years",
         "6 - 10 Years",
         "6 - 10 Years",
         "3 - 5 Years",
         "1 Year",
         "More than 10 years",
         "6 - 10 Years",
         "2 Years",
         "3 - 5 Years",
         "More than 10 years",
         "3 - 5 Years",
         "More than 10 years")

# Ploting data
colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)', 'rgb(114,147,203)')

plot_ly(
  data.frame(table(age)), 
  labels = ~age, 
  values = ~Freq, 
  type = 'pie',
  sort = FALSE,
  direction = "clockwise",
  textposition = 'inside',
  textfont = list (size = 14), # 28
  textinfo = 'label+percent',
  insidetextfont = list(color = '#FFFFFF'),
  
  marker = list(colors = colors,
                line = list(color = '#FFFFFF', width = 1)))

2.2. Company Main Activity

# Preparing dataset
activity <- c("Software development (Customisable)",
"Other",
"Software development (Customisable)",
"Software development (Customisable)",
"Other",
"Other",
"Software development (Customisable)",
"ISPs/ Other internet services",
"Software development (Non customisable)",
"Technical support, maintenance or other IT services",
"IT Consulting",
"Technical support, maintenance or other IT services",
"Technical support, maintenance or ther IT services",
"Software development (Customisable)",
"Software development (On request)",
"Software development (Customisable)",
"Software development (Customisable)",
"Software development (On request)",
"Technical support, maintenance & other IT services",
"ISPs/ Other internet services",
"IT Consulting",
"Software development (Non customisable)",
"Technical support, maintenance or other IT services",
"Technical support, maintenance or other IT services",
"IT Consulting",
"Other",
"Software development (Customisable)",
"ISPs/ Other internet services",
"Software development (Customisable)")

# Ploting data
colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)', 'rgb(114,147,203)')

mMargin = list(
  l = 40,
  r = 40,
  b = 50,
  t = 50,
  pad = 0
)

plot_ly(
  data.frame(table(activity)), 
  labels = ~activity, 
  values = ~Freq, 
  type = 'pie',
  sort = F,
  direction = "clockwise",
  textposition = 'outside',
  textinfo = 'label+percent',
  insidetextfont = list(color = '#FFFFFF'),
  marker = list(colors = colors,
                line = list(color = '#FFFFFF', width = 1))) %>%
  layout(autosize = T, margin = mMargin)

2.3. Target Market

# Preparing dataset
market <- c("Consulting and services","Technology","Other",
"Financial services","Retail",
"Consulting and services","Logistic","Manufacturing/Industrial","Retail","Agriculture",
"Technology","Agriculture",
"Consulting and services","Education","Manufacturing/Industrial","Retail",
"Consulting and services","Technology","E-commerce","Telecommunications",
"Retail",
"Technology",
"Retail",
"Manufacturing/Industrial","Retail",
"Consulting and services","Technology","E-commerce",
"Logistic","Retail",
"Consulting and services","Technology","Retail",
"Manufacturing/Industrial","Other",
"Healthcare/Medical","Retail","E-commerce",
"Consulting and services","Manufacturing/Industrial",
"Consulting and services","Financial services","Government","Technology","Manufacturing/Industrial","Retail","E-commerce","Telecommunications","City",
"Financial services","Technology","Logistic","Agriculture",
"Consulting and services","Financial services","Technology","E-commerce",
"Consulting and services","Education","Technology","E-commerce",
"Consulting and services","Financial services","Technology","Telecommunications",
"Education","Financial services","Healthcare/Medical","Retail","Agriculture",
"Consulting and services","Technology","E-commerce","Telecommunications",
"Consulting and services","Education","Financial services","Government","Technology","Logistic","Manufacturing/Industrial",
"Consulting and services","Technology",
"Consulting and services","Education","Financial services","Government","Healthcare/Medical","Seguros","Technology","Logistic","Manufacturing/Industrial","ONGs","Retail","E-commerce","Telecommunications","Agriculture","City","Energia","Other",
"Healthcare/Medical","Logistic","Telecommunications",
"Consulting and services","Technology","Retail","E-commerce","City","Other",
"Manufacturing/Industrial","Retail")

# Preparing DF
marketDF <- data.frame(table(market))

col <- 1
line <- 1
tt <- 29 # Total of respondents

for (line in 1:nrow(marketDF)) # Creating percentages
  marketDF[line, 2] <- marketDF[line, 2] / tt

marketDF <- marketDF[order(marketDF$Freq), ]
  
# Ploting data
mMargin = list(
  l = 200,
  r = 40,
  b = 50,
  t = 50,
  pad = 5,
  autoexpand = T
)

y <- marketDF$market
x_saving <- marketDF$Freq

plot_ly(
  x = ~x_saving, 
  y = ~reorder(y, x_saving),
  orientation = "h",
  type = "bar",
  marker = list(color = 'rgba(176,196,222, 0.6)',
                line = list(color = 'rgba(176,196,222, 0.6)', 
                width = 1))
  ) %>%
layout(autosize = T, 
       margin = mMargin,
       xaxis = list(title = '(%) Occurencies'),
       yaxis = list(title = '')) %>%
add_annotations(text = paste(round(x_saving*100, 1), '%'), showarrow = FALSE)

2.4. Knowledge on Cloud

# Preparing dataset
knowledge <- c("Mastery",
"Advanced knowledge",
"Mastery",
"Knowledge & practical experience",
"Basic knowledge",
"Mastery",
"Knowledge & practical experience",
"Advanced knowledge",
"Mastery",
"Basic knowledge",
"Basic knowledge",
"Knowledge & practical experience",
"Basic knowledge",
"Mastery",
"Advanced knowledge",
"Advanced knowledge",
"Mastery",
"Knowledge & practical experience",
"Knowledge & practical experience",
"Advanced knowledge",
"Advanced knowledge",
"Basic knowledge",
"Advanced knowledge",
"Advanced knowledge",
"Basic knowledge",
"Knowledge & practical experience",
"Mastery",
"Mastery",
"Basic knowledge")

# Ploting data
colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)', 'rgb(114,147,203)')

plot_ly(
  data.frame(table(knowledge)), 
  labels = ~knowledge, 
  values = ~Freq, 
  type = 'pie',
  sort = F,
  direction = "clockwise",
  textposition = 'inside',
  textinfo = 'label+percent',
  insidetextfont = list(color = '#FFFFFF'),
  marker = list(colors = colors,
                line = list(color = '#FFFFFF', width = 1)))

3. Drivers & Barriers

3.1. Competitive Advantage

# Preparing dataset
competitive <- c("Agree",
"Strongly agree",
"Agree",
"Strongly agree",
"Strongly agree",
"Strongly agree",
"Strongly agree",
"Agree",
"Strongly agree",
"Agree",
"Agree",
"Agree",
"Strongly agree",
"Strongly agree",
"Agree",
"Neutral",
"Strongly agree",
"Strongly agree",
"Strongly agree",
"Agree",
"Agree",
"Strongly agree",
"Disagree",
"Neutral",
"Neutral",
"Strongly agree",
"Strongly agree",
"Strongly agree",
"Agree")

# Ploting data
colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)', 'rgb(114,147,203)')

plot_ly(
  data.frame(table(competitive)), 
  labels = ~competitive, 
  values = ~Freq, 
  type = 'pie',
  sort = F,
  direction = "clockwise",
  textposition = 'inside',
  textinfo = 'label+percent',
  insidetextfont = list(color = '#FFFFFF'),
  marker = list(colors = colors,
                line = list(color = '#FFFFFF', width = 1)))

3.2. Drivers

# Preparing dataset
drivers <- c("Access to large-scale distributed resources ",
"Access to large-scale distributed resources ",
"Access to large-scale distributed resources ",
"Access to large-scale distributed resources ",
"Access to large-scale distributed resources ",
"Access to large-scale distributed resources ",
"Access to unique/special services",
"Access to unique/special services",
"Access to world-class resources at affordable prices ",
"Access to world-class resources at affordable prices ",
"Adding redundancy to network infrastructure ",
"Adding redundancy to network infrastructure ",
"Business continuity, regular backups and disaster recover",
"Business continuity, regular backups and disaster recover",
"Business continuity, regular backups and disaster recover",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Cost reduction",
"Deliver new capabilities/ modernisation",
"Deliver new capabilities/ modernisation",
"Deliver new capabilities/ modernisation",
"Deliver new capabilities/ modernisation",
"Deliver new capabilities/ modernisation",
"Enhanced security ",
"Enhanced security ",
"Enhanced security ",
"Enhanced security ",
"Enhanced security ",
"Faster software delivery ",
"Faster software delivery ",
"Faster software delivery ",
"Faster software delivery ",
"Flexibility and attractive SLAs ",
"Flexibility and attractive SLAs ",
"Flexibility and attractive SLAs ",
"Flexibility and attractive SLAs ",
"Increased computing capacity",
"Greater IT efficiency and agility ",
"Greater IT efficiency and agility ",
"Greater IT efficiency and agility ",
"Greater IT efficiency and agility ",
"Greater IT efficiency and agility ",
"Maximisation of resource utilisation",
"Mobility & convenience in accessing applications",
"Mobility & convenience in accessing applications",
"Mobility & convenience in accessing applications",
"Mobility & convenience in accessing applications",
"Mobility & convenience in accessing applications",
"Mobility & convenience in accessing applications",
"Mobility & convenience in accessing applications",
"Mobility & convenience in accessing applications",
"Rapid scalability to tackle bursts in load",
"Rapid scalability to tackle bursts in load",
"Rapid scalability to tackle bursts in load",
"Rapid scalability to tackle bursts in load",
"Rapid scalability to tackle bursts in load",
"Rapid scalability to tackle bursts in load",
"Reduced capital expenditure in hardware, software, IT support or information security",
"Reduced capital expenditure in hardware, software, IT support or information security",
"Reduced capital expenditure in hardware, software, IT support or information security",
"Reduced capital expenditure in hardware, software, IT support or information security",
"Reduced capital expenditure in hardware, software, IT support or information security",
"Reduced capital expenditure in hardware, software, IT support or information security",
"Reduced capital expenditure in hardware, software, IT support or information security",
"Reduced planning due to on-demand resource provisioning",
"Reduced time-to-market ",
"Reduced time-to-market ",
"The ability to outsource marginal functions, such as email  ",
"The ability to outsource marginal functions, such as email  ",
"The ability to outsource marginal functions, such as email  ",
"The ability to outsource marginal functions, such as email  ")

# Preparing DF
driversDF <- data.frame(table(drivers))

col <- 1
line <- 1
tt <- 29 # Total of respondents

for (line in 1:nrow(driversDF)) # Creating percentages
  driversDF[line, 2] <- driversDF[line, 2] / tt

driversDF <- driversDF[order(driversDF$Freq), ]

# Ploting data
mMargin = list(
  l = 400,
  r = 40,
  b = 50,
  t = 50,
  pad = 5,
  autoexpand = T
)

y <- driversDF$drivers
x_saving <- driversDF$Freq

plot_ly(
  x = ~x_saving, 
  y = ~reorder(y, x_saving),
  orientation = "h",
  type = "bar",
  marker = list(color = 'rgba(176,196,222, 0.6)',
                line = list(color = 'rgba(176,196,222, 0.6)', 
                width = 1))
  ) %>%
layout(autosize = T, 
       margin = mMargin,
       xaxis = list(title = '(%) Occurencies'),
       yaxis = list(title = '')) %>%
add_annotations(text = paste(round(x_saving*100, 1), '%'), showarrow = FALSE)

3.3. Barriers

# Preparing dataset
barriers <- c("Confusion over which cloud approach to take",
"Confusion over which cloud approach to take",
"Confusion over which cloud approach to take",
"Confusion over which cloud approach to take",
"Cost concerns",
"Cost concerns",
"Cost concerns",
"Cost concerns",
"Cost concerns",
"Cost concerns",
"Cost concerns",
"Cost concerns",
"Cost concerns",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Fear of security breaches ",
"Finding the right partner",
"Finding the right partner",
"Finding the right partner",
"Lack of a clear cloud strategy",
"Lack of a clear cloud strategy",
"Lack of a clear cloud strategy",
"Lack of a clear cloud strategy",
"Lack of agility in the business",
"Lack of agility in the business",
"Lack of integration",
"Lack of integration",
"Lack of integration",
"Lack of integration",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of knowledge, advice or guidelines on cloud adoption",
"Lack of trust",
"Lack of trust",
"Lack of trust",
"Lack of trust",
"Lack of trust",
"Lack of trust",
"Lack of trust",
"Lack of trust",
"Lack of trust",
"Other",
"Vendor lock-in")

# Preparing DF
barriersDF <- data.frame(table(barriers))

col <- 1
line <- 1
tt <- 29 # Total of respondents

for (line in 1:nrow(barriersDF)) # Creating percentages
  barriersDF[line, 2] <- barriersDF[line, 2] / tt

barriersDF <- barriersDF[order(barriersDF$Freq), ]

# Ploting data
mMargin = list(
  l = 400,
  r = 40,
  b = 50,
  t = 50,
  pad = 5,
  autoexpand = T
)

y <- barriersDF$barriers
x_saving <- barriersDF$Freq

plot_ly(
  x = ~x_saving, 
  y = ~reorder(y, x_saving),
  orientation = "h",
  type = "bar",
  marker = list(color = 'rgba(176,196,222, 0.6)',
                line = list(color = 'rgba(176,196,222, 0.6)', 
                width = 1))
  ) %>%
layout(autosize = T, 
       margin = mMargin,
       xaxis = list(title = '(%) Occurencies'),
       yaxis = list(title = '')) %>%
add_annotations(text = paste(round(x_saving*100, 1), '%'), showarrow = FALSE)

3.4. Risks

# Preparing dataset
risks <- c("Application/system performance",
"Application/system performance",
"Application/system performance",
"Application/system performance",
"Application/system performance",
"Application/system performance",
"Application/system performance",
"Business viability of provider; risk company will fail",
"Business viability of provider; risk company will fail",
"Features and general maturity of technology",
"Increased costs",
"Increased costs",
"Increased costs",
"Increased costs",
"Increased costs",
"Increased costs",
"Increased costs",
"Increased costs",
"Increased costs",
"Increased costs",
"Integration of cloud data with our internal systems",
"Lack of qualified personnel",
"Lack of qualified personnel",
"Lack of qualified personnel",
"Lack of qualified personnel",
"Other",
"Performance loss",
"Performance loss",
"Performance loss",
"Performance loss",
"Performance loss",
"Performance loss",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Security breaches",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Service unavailability",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Unauthorised access to or leak of our customer or proprietary information",
"Vendor lock-in",
"Vendor lock-in",
"Vendor lock-in",
"Vendor lock-in",
"Vendor lock-in")

# Preparing DF
risksDF <- data.frame(table(risks))

col <- 1
line <- 1
tt <- 29 # Total of respondents

for (line in 1:nrow(risksDF)) # Creating percentages
  risksDF[line, 2] <- risksDF[line, 2] / tt

risksDF <- risksDF[order(risksDF$Freq), ]

# Ploting data
mMargin = list(
  l = 400,
  r = 40,
  b = 50,
  t = 50,
  pad = 5,
  autoexpand = T
)

y <- risksDF$risks
x_saving <- risksDF$Freq

plot_ly(
  x = ~x_saving, 
  y = ~reorder(y, x_saving),
  orientation = "h",
  type = "bar",
  marker = list(color = 'rgba(176,196,222, 0.6)',
                line = list(color = 'rgba(176,196,222, 0.6)', 
                width = 1))
  ) %>%
layout(autosize = T, 
       margin = mMargin,
       xaxis = list(title = '(%) Occurencies'),
       yaxis = list(title = '')) %>%
add_annotations(text = paste(round(x_saving*100, 1), '%'), showarrow = FALSE)

4. Adoption

4.1. Replacement Target

# Preparing dataset
replacementTarget <- c("Other",
"Application servers",
"Backup services",
"Application servers",
"File storage",
"Other",
"File storage",
"Application servers",
"Other",
"Backup services",
"Application servers",
"Email services",
"Backup services",
"Application servers",
"Application servers",
"Database",
"File storage",
"Application servers",
"File storage",
"Computing",
"Backup services",
"Email services",
"Backup services",
"Other",
"File storage",
"Backup services",
"Application servers")

# Preparing DF
replacementTargetDF <- data.frame(table(replacementTarget))

col <- 1
line <- 1
tt <- 28 # Total of respondents - only companys that use or are planning to use cloud

for (line in 1:nrow(replacementTargetDF)) # Creating percentages
  replacementTargetDF[line, 2] <- replacementTargetDF[line, 2] / tt

replacementTargetDF <- replacementTargetDF[order(replacementTargetDF$Freq), ]

# Ploting data
mMargin = list(
  l = 400,
  r = 40,
  b = 50,
  t = 50,
  pad = 5,
  autoexpand = T
)

y <- replacementTargetDF$replacementTarget
x_saving <- replacementTargetDF$Freq

plot_ly(
  x = ~x_saving, 
  y = ~reorder(y, x_saving),
  orientation = "h",
  type = "bar",
  marker = list(color = 'rgba(176,196,222, 0.6)',
                line = list(color = 'rgba(176,196,222, 0.6)', 
                width = 1))
  ) %>%
layout(autosize = T, 
       margin = mMargin,
       xaxis = list(title = '(%) Occurencies'),
       yaxis = list(title = '')) %>%
add_annotations(text = paste(round(x_saving*100, 1), '%'), showarrow = FALSE)

4.2. Provider Selection

# Preparing dataset
providerSelection <- c("Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Cloud service availability",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Competitive price",
"Facility to use its services",
"Facility to use its services",
"Facility to use its services",
"Facility to use its services",
"Facility to use its services",
"Facility to use its services",
"Facility to use its services",
"Facility to use its services",
"Location",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Modern technology",
"Other",
"Other",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Technical support",
"Time in the market",
"Tools for cloud management",
"Tools for cloud management",
"Tools for cloud management",
"Tools for cloud management",
"Tools for cloud management",
"Tools for cloud management",
"Tools for cloud management")

# Preparing DF
providerSelectionDF <- data.frame(table(providerSelection))

col <- 1
line <- 1
tt <- 28 # Total of respondents - only companys that use or are planning to use cloud

for (line in 1:nrow(providerSelectionDF)) # Creating percentages
  providerSelectionDF[line, 2] <- providerSelectionDF[line, 2] / tt

providerSelectionDF <- providerSelectionDF[order(providerSelectionDF$Freq), ]

# Ploting data
mMargin = list(
  l = 400,
  r = 40,
  b = 50,
  t = 50,
  pad = 5,
  autoexpand = T
)

y <- providerSelectionDF$providerSelection
x_saving <- providerSelectionDF$Freq

plot_ly(
  x = ~x_saving, 
  y = ~reorder(y, x_saving),
  orientation = "h",
  type = "bar",
  marker = list(color = 'rgba(176,196,222, 0.6)',
                line = list(color = 'rgba(176,196,222, 0.6)', 
                width = 1))
  ) %>%
layout(autosize = T, 
       margin = mMargin,
       xaxis = list(title = '(%) Occurencies'),
       yaxis = list(title = '')) %>%
add_annotations(text = paste(round(x_saving*100, 1), '%'), showarrow = FALSE)

4.3. Public Cloud Providers

# Preparing dataset
publicProviders <- c("Google",
"Google",
"Amazon",
"Google",
"Amazon",
"Microsoft",
"Microsoft",
"Amazon",
"Amazon",
"Amazon",
"Google",
"Google",
"Amazon",
"Amazon",
"Google",
"Google",
"Amazon",
"Google",
"Amazon",
"Google",
"Google",
"IBM",
"IBM",
"IBM",
"Microsoft",
"Other",
"Other",
"Other",
"Other",
"Other",
"Other",
"Other",
"Other",
"Other",
"Other",
"Other",
"Other",
"Other")

# Preparing DF
publicProvidersDF <- data.frame(table(publicProviders))

col <- 1
line <- 1
tt <- 24 # Total of respondents - only companys that are CURRELNTLY using cloud services

for (line in 1:nrow(publicProvidersDF)) # Creating percentages
  publicProvidersDF[line, 2] <- publicProvidersDF[line, 2] / tt

publicProvidersDF <- publicProvidersDF[order(publicProvidersDF$Freq), ]

# Ploting data
mMargin = list(
  l = 400,
  r = 40,
  b = 50,
  t = 50,
  pad = 5,
  autoexpand = T
)

y <- publicProvidersDF$publicProviders
x_saving <- publicProvidersDF$Freq

plot_ly(
  x = ~x_saving, 
  y = ~reorder(y, x_saving),
  orientation = "h",
  type = "bar",
  marker = list(color = 'rgba(176,196,222, 0.6)',
                line = list(color = 'rgba(176,196,222, 0.6)', 
                width = 1))
  ) %>%
layout(autosize = T, 
       margin = mMargin,
       xaxis = list(title = '(%) Occurencies'),
       yaxis = list(title = '')) %>%
add_annotations(text = paste(round(x_saving*100, 1), '%'), showarrow = FALSE)

4.4. Issues in Cloud Use

# Preparing dataset
issuesSecurityBreach <-c ("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes")

issuesNoAccess <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes")

issuesPoorPerformance <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Usually")

issuesOutBusiness <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally")

issuesIntegration <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Usually")

issuesLockIn <- c("Always",
"Always",
"Always",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Usually",
"Usually",
"Usually",
"Usually",
"Usually",
"Usually")

issuesMaturity <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
NA)

issuesCloudSystemPerformance <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes")

issuesHighCost <- c("Always",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Usually",
NA)

issuesQualiProf <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Usually",
"Usually",
"Usually",
"Usually",
"Usually",
"Usually")

issuesLossControl <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
NA)

issuesUnavail <- c("Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes",
"Sometimes")

issuesOther <- c("Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Never",
"Occasionally",
"Occasionally",
"Sometimes",
"Sometimes",
"Sometimes",
NA,
NA,
NA,
NA,
NA,
NA,
NA,
NA)

# Preparing DF
issuesDF <- data.frame(issuesCloudSystemPerformance, issuesHighCost, issuesIntegration, issuesLockIn, issuesLossControl, issuesMaturity, issuesNoAccess, issuesOther, issuesOutBusiness, issuesPoorPerformance, issuesQualiProf, issuesSecurityBreach, issuesUnavail)

for (i in 1:13) {
  print (names(issuesDF)[i]) 
  print (table (issuesDF[, i]))
}
## [1] "issuesCloudSystemPerformance"
## 
##        Never Occasionally    Sometimes 
##            7           10            7 
## [1] "issuesHighCost"
## 
##       Always        Never Occasionally    Sometimes      Usually 
##            1            4           11            6            1 
## [1] "issuesIntegration"
## 
##        Never Occasionally    Sometimes      Usually 
##           13            7            3            1 
## [1] "issuesLockIn"
## 
##       Always        Never Occasionally    Sometimes      Usually 
##            3            7            4            4            6 
## [1] "issuesLossControl"
## 
##        Never Occasionally    Sometimes 
##           11           10            2 
## [1] "issuesMaturity"
## 
##        Never Occasionally    Sometimes 
##            9           10            4 
## [1] "issuesNoAccess"
## 
##        Never Occasionally    Sometimes 
##           19            4            1 
## [1] "issuesOther"
## 
##        Never Occasionally    Sometimes 
##           11            2            3 
## [1] "issuesOutBusiness"
## 
##        Never Occasionally 
##           18            6 
## [1] "issuesPoorPerformance"
## 
##        Never Occasionally    Sometimes      Usually 
##            9            8            6            1 
## [1] "issuesQualiProf"
## 
##        Never Occasionally    Sometimes      Usually 
##            5            7            6            6 
## [1] "issuesSecurityBreach"
## 
##        Never Occasionally    Sometimes 
##            9           11            4 
## [1] "issuesUnavail"
## 
##        Never Occasionally    Sometimes 
##            3           12            9
issuesLabel <- c(
  "Cloud System Performance", 
  "High Cost", 
  "Integration", 
  "Lock-in", 
  "Loss of Control", 
  "Maturity", 
  "Unauth. Access", 
  "Other", 
  "Out of Business", 
  "Poor Performance", 
  "Qualified Prof.", 
  "Security Breach", 
  "Unavail."
)
                      
issuesOccurenceNever        <- c(07, 04, 13, 07, 11, 09, 19, 11, 18, 09, 05, 09, 03)
issuesOccurenceOccasionally <- c(10, 11, 07, 04, 10, 10, 04, 02, 06, 08, 07, 11, 12)
issuesOccurenceSometimes    <- c(07, 06, 03, 04, 02, 04, 01, 03, 00, 06, 06, 04, 09)
issuesOccurenceUsually      <- c(00, 01, 01, 06, 00, 00, 00, 00, 00, 01, 06, 00, 00)
issuesOccurenceAlways       <- c(00, 01, 00, 03, 00, 00, 00, 00, 00, 00, 00, 00, 00)

issuesMatrix <- rbind(issuesOccurenceNever, issuesOccurenceOccasionally, issuesOccurenceSometimes, issuesOccurenceUsually, issuesOccurenceAlways)

issuesMatrixPerc <- rbind(issuesMatrix, 0)

tt <- 0
for (col in 1:13) {
   for (lin in 1:5) {
    tt <- tt + issuesMatrix[lin, col]
   }
  
  issuesMatrixPerc[6, col] <- tt
  tt <- 0
}

for (col in 1:13) 
   for (lin in 1:5) 
    issuesMatrixPerc[lin, col] <- issuesMatrixPerc[lin, col] / issuesMatrixPerc[6, col]

issuesMatrixPercTransposed <- t(issuesMatrixPerc)
issuesMatrixPercTransposedDF <- as.data.frame.matrix(issuesMatrixPercTransposed)
issuesMatrixPercTransposedDF[, 6] <- issuesLabel

# Sorting DF
issuesMatrixPercTransposedDFSorted <- issuesMatrixPercTransposedDF[
                                                                    order(
                                                                      -(issuesMatrixPercTransposedDF$issuesOccurenceUsually + issuesMatrixPercTransposedDF$issuesOccurenceAlways),
                                                                        issuesMatrixPercTransposedDF$issuesOccurenceOccasionally + issuesMatrixPercTransposedDF$issuesOccurenceNever
                                                                    ), 
                                                                  ]

issuesMatrixPercTransposedDF$V6 <- factor (
                                            issuesMatrixPercTransposedDF$V6, 
                                            levels = issuesMatrixPercTransposedDFSorted$V6
                                          )

# Ploting data
plot_ly (issuesMatrixPercTransposedDF,
         x = ~V6,
         y = ~issuesOccurenceNever,
         name = "Never",
         type = "bar"
          ) %>%
add_trace(y = ~issuesOccurenceOccasionally, name = 'Occasionally') %>%
add_trace(y = ~issuesOccurenceSometimes, name = 'Sometimes') %>%
add_trace(y = ~issuesOccurenceUsually, name = 'Usually') %>%
add_trace(y = ~issuesOccurenceAlways, name = 'Always') %>%
layout(yaxis = list(title = 'Occurrence (%)'), barmode = 'stack')